import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);

// 初始化vuex对象
const store = new Vuex.Store({
    state: {
        num: 10
    },
    //mutations中定义方法，这个方法是修改state中数据的唯一方法
    // Vuex中mutations中要求不能写异步代码，如果有异步的ajax请求，应该放置在actions中
    mutations: {
        // 修改state的值
        // 方法里参数 第一个参数是当前store的state属性
        changeNum(state) {
            console.log(state);
            state.num++;
        },
        changeNumArg(state, payload) {
            state.num += payload;
        }
    },
    actions: {
        actChange(context) {
            console.log(context);
            console.log(context.state);
            context.commit("changeNum");
        },
        actChangeArg(context, data) {
            console.log(context);
            console.log(data);
            // data:可以是axios/ajax请求过来的异步数据
            context.commit("changeNumArg", data);

        },
        otherAct() {
            // context.diapatch调用其他的action
        }
    },
    getters: {
        // 派生出来的状态,相当于vuex的计算属性,
        getterNum(state) {
            return "¥" + state.num;
        }
    }

});




export default store